/**
 * 用户相关API服务
 */

const http = require('./http');

/**
 * 用户登录
 * @param {Object} data 登录参数 {username, password}
 * @returns {Promise} Promise对象
 */
const login = (data) => {
  return http.post('/api/auth/login', data);
};

/**
 * 用户注册
 * @param {Object} data 注册参数 {username, password, nickname, invitationCode}
 * @returns {Promise} Promise对象
 */
const register = (data) => {
  return http.post('/api/auth/register', data);
};

/**
 * 获取当前用户信息
 * @returns {Promise} Promise对象
 */
const getCurrentUser = () => {
  return http.get('/api/users/current');
};

/**
 * 更新用户信息
 * @param {Object} data 用户信息 {nickname, gender}
 * @returns {Promise} Promise对象
 */
const updateUserInfo = (data) => {
  return http.put('/api/users/current', data);
};

/**
 * 上传用户头像
 * @param {String} filePath 文件路径
 * @returns {Promise} Promise对象
 */
const uploadAvatar = (filePath) => {
  return http.uploadFile('/api/users/avatar', filePath, 'avatar');
};

/**
 * 验证邀请码
 * @param {String} code 邀请码
 * @returns {Promise} Promise对象
 */
const validateInvitationCode = (code) => {
  return http.post('/api/invitation-codes/validate', { code });
};

/**
 * 获取可用邀请码列表（管理员）
 * @returns {Promise} Promise对象
 */
const getInvitationCodes = () => {
  return http.get('/api/invitation-codes');
};

module.exports = {
  login,
  register,
  getCurrentUser,
  updateUserInfo,
  uploadAvatar,
  validateInvitationCode,
  getInvitationCodes
};